package io.yyxx.boot.util;

import org.springframework.stereotype.Component;

import java.time.*;
import java.time.format.*;

/**
 * 将（2025-04-20 11:11）时间转为时间戳
 */
@Component
public class DateTimeToTimestampUtil {
    public static long DateTimeToTimestamp(String dateTimeStr) {

        // 定义日期时间格式（匹配字符串的格式）
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
        
        // 解析为 LocalDateTime（无时区信息）
        LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, formatter);
        
        // 指定时区（例如：系统默认时区）
        ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
        
        // 获取时间戳（毫秒）
        long timestamp = zonedDateTime.toInstant().toEpochMilli();
//        System.out.println("时间戳（默认时区）: " + timestamp);
        return timestamp;
    }
    public static long DateTimeToTimestamp2(String dateTimeStr) {

        // 定义日期时间格式（匹配字符串的格式）
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 解析为 LocalDateTime（无时区信息）
        LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, formatter);

        // 指定时区（例如：系统默认时区）
        ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());

        // 获取时间戳（毫秒）
        long timestamp = zonedDateTime.toInstant().toEpochMilli();
//        System.out.println("时间戳（默认时区）: " + timestamp);
        return timestamp;
    }

    public static long dateTimeToTimestamp3(String dateTimeStr) {

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm'Z'")
                .withZone(ZoneOffset.UTC);
        return LocalDateTime.parse(dateTimeStr, formatter)
                .toInstant(ZoneOffset.UTC)
                .toEpochMilli();
    }
}